/**
 * 
 */
package pruebas.tiendaOl.dominio.incrustables;

import javax.persistence.Embeddable;

import com.intelap.utils.DbgHlp;

/**
 * @author ggpollit
 * 
 */
@Embeddable
public class ItemCarrito {
	
	//// Constructores ////
	public ItemCarrito(int cantidad) {
		this.cantidad = cantidad;
	}

	// // Propiedades persistentes ////
	private int cantidad;
	public int getCantidad() {
		return this.cantidad;
	}
	protected void setCantidad(int cantidad) {
		this.cantidad = cantidad;
	}

	// // Comportamiento ////
	/**Suma a {@link #cantidad} la 'cantidadSePretendeAgregar'.
	 * Da el nuevo valor de {@link #cantidad}.  */
	public int agregar(int cantidadSePretendeAgregar) {
		int cantidadFinal = this.getCantidad() + cantidadSePretendeAgregar;
		if( cantidadFinal < 0)
			cantidadFinal = 0;
		this.setCantidad(cantidadFinal);
		return cantidadFinal;
	}
	
	/**Resta a {@link #cantidad} el mínimo entre {@link #cantidad} y 'cantidadSeIntetaQuitar' recibida.
	 * Da la cantidad que se logró restar */
	public int quitar(int cantidadSeIntetaQuitar) {
		int cantidadQuitada = Math.min(this.getCantidad(),cantidadSeIntetaQuitar);
		this.setCantidad(this.getCantidad()-cantidadQuitada);
		return cantidadQuitada;
	}
	
	
	///////////// toString, hashCode and equals ////////////////

	@Override
	public String toString() {
		return DbgHlp.toString(this, "cantidad");
	}

	
	////////////////// Requerido por JPA ///////////////////////
	protected ItemCarrito(){}
	
}
